Steaming SSR
❓질문
Steaming SSR에 관하여 설명해주세요.
💡 조사하기전 내가 알고 있던 내용
Steaming SSR
은 서버에서 만들어진 HTML파일을 한번에 보내는것이 아니라 작은 조각 단위
로 나누어 전송을 합니다 그럼 받은 브라우저에서는 중요한 부분을 먼저 렌더링하여 보여줄수있습니다.
동영상이나 무거운 UI파트를 보유하고있는 웹 페이지의 경우 한번에 보내게되면 병목 현상이 생깁니다. 이를 방지할려고 만들어진 기술이고 이를 통해서 해당부분을 제외하고 다른 부분을 보여줌으로써 사용자 경험을 끌어올릴 수 있습니다.
🏫 정리한 내용
Streaming SSR
은 서버에서 렌더링된 HTML을 한 번에 완성해서 보내는 방식이 아니라, 준비된 부분부터 점진적으로 스트리밍해서 클라이언트에 전달하는 기술입니다.
기존 SSR은 서버에서 모든 데이터를 처리한 뒤 완전한 HTML을 전송하는 반면, Streaming SRR은 서버가 데이터를 준비하는 즉시 HTML 조각을 스트림 형태로 보내고 클라이언트는 이를 실시간으로 렌더링합니다.
React 18에서는 renderToPipeableStream API
를 통해 구현할 수 있으며 이 API는 서버에서 HTMl을 조각 단위로 스트리밍할 수 있도록 지원합니다.
스트리밍된 데이터와 리액트의 hydration과정에서 발생할 수 있는 문제도 있습니다.
렌더링 되는 HTML과 리액트 상태 불일치로 에러가 발생할 수 도있습니다. 이때문에 텐스택 쿼리 같은 라이브러리를 활용하여 데이터를 신뢰성있게 동기화 시키는게 좋습니다.